/*Copyright (C) 2009 Careil Baptiste

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
//
///////////////////////////////////////////////////////////
/// \file Cursor.h Ce fichier contient les fonctions affectant 
/// la position du curseur.
///////////////////////////////////////////////////////////
#ifndef CURSOR_HEADER
# define CURSOR_HEADER

# include "dll.h"

# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */

  ///////////////////////////////////////////////////////////
  /// Permet de choisir la direction du déplacement du curseur
  ///
  /// \sa CSLP_MoveCursor()
  ///////////////////////////////////////////////////////////
  typedef enum CSLP_WAY {
    FORWARD,
    BACKWARD,
    DOWN,
    UP
  } CSLP_WAY;

  ///////////////////////////////////////////////////////////
  /// Permet de placer le curseur en début de ligne.
  ///////////////////////////////////////////////////////////
  void DLL_IMPEXP CSLP_GotoBeginOfLine();

  ///////////////////////////////////////////////////////////
  /// Permet le placer le curseur à la ligne précédente, à la première
  /// colonne.
  ///
  /// \return ERR Si le curseur sort de l'écran.
  ///         OK Si le positionnement a réussi.
  ///////////////////////////////////////////////////////////
  int DLL_IMPEXP CSLP_GotoPreviousLine();

  ///////////////////////////////////////////////////////////
  /// Permet de placer le curseur à la ligne suivante, à la première
  /// colonne.
  ///
  /// \return ERR Si le curseur sort de l'écran.
  ///         OK Si le positionnement a réussi.
  ///////////////////////////////////////////////////////////
  int DLL_IMPEXP CSLP_GotoNextLine();

  ///////////////////////////////////////////////////////////
  /// Permet de déplacer le curseur dans la direction voulue
  ///
  /// \param way Une valeur de l'énumération CSLP_WAY indiquand le
  /// sens de déplacement du curseur.
  /// \param value Le nombre de case dont doit se déplacer le curseur.
  /// \return ERR Si le curseur sort de l'écran.
  ///         OK Si le positionnement a réussit.
  ///////////////////////////////////////////////////////////
  int DLL_IMPEXP CSLP_MoveCursor(CSLP_WAY way, unsigned int value);

  ///////////////////////////////////////////////////////////
  /// Permet de sauvegarder la position courante du curseur
  ///
  /// \sa CSLP_RestorePos()
  ///////////////////////////////////////////////////////////
  void DLL_IMPEXP CSLP_SavePos();

  ///////////////////////////////////////////////////////////
  /// Permet de restaurer la position du curseur
  ///
  /// \sa CSLP_SavePos()
  ///////////////////////////////////////////////////////////
  void DLL_IMPEXP CSLP_RestorePos();

# ifdef __cplusplus
}
# endif /* __cplusplus */

#endif /* CSLP_CURSOR_HEADER */
